/*
 * Platzad
 * Copyright 2008 Shayne Riley
 *
 * This file is part of Platzad.
 *
 * Platzad is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Platzad is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Platzad.  If not, see <http://www.gnu.org/licenses/>.
 *
 * To contact the authors on questions or issues regarding the license,
 * you may send an email to <shayner at gmail dot com> or write to
 * Shayne Riley / P.O. Box 1092 / McCook, NE 69001.
 */

#ifndef IMAGE_H_
#define IMAGE_H_

namespace pzdDisplay
{

//! A raster of visual information which the Display class can display.
/**
 * This interface presents the ability to represent rasters without knowledge of
 * the underlying graphics implementation (i.e. SDL, OpenGL, DirectX, etc.)
 *
 * This is an ABC with nothing but pure virtual functions.
 */
class Image
{
public:
	Image();

//    //! Constructor for Image.
//	/**
//	 * @param width	the width of the image.
//	 * @param height	the height of the image.
//	 * @param data	the bitmap information used by the image. Its size is
//	 * 		determined by width x height x 4 (for red, green, blue, alpha).
//	 * 		- index % 4 = 0 = Red
//	 *  	- index % 4 = 1 = Green
//	 *      - index % 4 = 2 = Blue
//	 * 		- index % 4 = 3 = Alpha
//	 *
//	 * 		This information is copied bit-for-bit.
//	 */
//	Image(const int width,
//			const int height,
//			const char * const data);
//

	virtual ~Image();

    //! Retrieve the horizontal length of the image in pixels.
    virtual int getWidth() const = 0;

    //! Retrieve the vertical length of the image in pixels.
    virtual int getHeight() const = 0;

//    //! Retrieves the data of the image.
//    /*
//     * @returns pointer to the data.
//     */
//    const char * const getRaster();
//
//    //! No copying needed, do not allow. Copy ctor declared, not defined.
//    Image(const Image& rhs);
//    //! No assignment needed. Do not define this function.
//    Image& operator=(const Image rhs);
//
//private:
//
//    //! No address-of needed. Do not define this function.
//    Image* operator&();
//    //! No const address-of needed. Do not define this function.
//    const Image* operator&() const;
//
//    // Variables
//    int mWidth;
//    int mHeight;
//    char *mData;
};

} // namespace

#endif /*IMAGE_H_*/
